Cloud computing has proliferated with the prevalence of connected devices. Cloud computing in general can be defined as a computer network which includes, computing hardware machine or group of computing hardware machines commonly referred as a server or servers connected through a communication network such as the Internet, an intranet, a local area network (LAN) or wide area network (WAN). Any individual user who has permission to access the server can use the server's processing power to run an application, store data, or perform any other computing task. Therefore, instead of using a personal computer every time to run a native application, the user can now run the application from anywhere in the world, as the server provides the processing power to the application and the server is also connected to a network via the Internet or other connection platforms to be accessed from anywhere. In common usage the term “the cloud” has become a shorthand way to refer to cloud computing infrastructure. The phrase “in the cloud” also can refer to software, platforms and infrastructure that are sold “as a service”, i.e. remotely through the Internet. Here, a service provide has actual servers which host products and services from a remote location, so end-users can simply log on to the network without installing anything. The major models of cloud computing service are known as software as a service, platform as a service, infrastructure as a service, security as a service, etc. Google, Amazon, IBM, Oracle Cloud, Rackspace, Salesforce, Zoho, Dropbox, Box.net, Microsoft, and Zscaler are some well-known cloud vendors/service providers.
In this context, service providers in the cloud must manage hardware (i.e., servers) across a geography. Service providers in the cloud often struggle with the configuration of core components over time. For example, a server configuration can be changed to avoid an existing defect or some critical issue or a short term solution. However, these configuration changes stick in the cloud and in time even the components providing similar services can become heterogeneous. Of course having similar components with different core configurations is problematic for the operations to manage the cloud. There are several challenges affecting cloud service providers. First, maintaining the cloud catering to different enterprise customers leads to configuration tuning of the cloud components/roles and tracking these configuration changes per customers is tedious. Second, cloud component configuration changes which are done to provide a short term fix often stay resulting in increased number of configuration sets for a particular role. Finally, as new features/functionality is rolled out, different components can be configured differently.